==== Déplacer ses bases de données MySQL ====
L'emplacement des données de MySQL est indiqué dans la variable **datadir** qui se trouve dans le fichier ''my.cnf''.
Toutefois, il peut exister plusieurs fichiers ''my.cnf'' :
<code>
$ mysqld --verbose --help | head -n13 | tail -n2
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 
</code>
Par défaut, il s'agit  du fichier ''/etc/mysql/my.cnf'' :
<code>$ tail  /etc/mysql/my.cnf
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
</code><code>
$ grep datadir /etc/mysql/mysql.conf.d/*.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf:datadir		= /var/lib/mysql
</code>
Donc par défaut, les données sont dans **/var/lib/mysql**.
On va mettre les données dans **/home/mysql**.

Tout d'abord on arrête le service :
<code>$ sudo service mysql stop</code>
On modifie **datadir**  avec le nouvel emplacement dans le fichier **/etc/mysql/mysql.conf.d/mysqld.cnf** :
<code>
$ grep datadir /etc/mysql/mysql.conf.d/*.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf:datadir		= /home/mysql
</code>
On déplace les données :
<code>$ sudo mv /var/lib/mysql /home/mysql</code>

Malheureusement cela ne suffit pas.
Le premier problème vient du fichier''/usr/share/mysql/mysql-systemd-start'' :
<code>
$ head  /usr/share/mysql/mysql-systemd-start -n25 | tail -n16
sanity () {
  if [ ! -r /etc/mysql/my.cnf ]; then
    echo "MySQL configuration not found at /etc/mysql/my.cnf. Please create one."
    exit 1
  fi

  if [ ! -d /var/lib/mysql ] && [ ! -L /var/lib/mysql ]; then
    echo "MySQL data dir not found at /var/lib/mysql. Please create one."
    exit 1
  fi

  if [ ! -d /var/lib/mysql/mysql ] && [ ! -L /var/lib/mysql/mysql ]; then
    echo "MySQL system database not found. Please run mysql_install_db tool."
    exit 1
  fi
}
</code>

Il faut donc créer le répertoire **/var/lib/mysql/mysql** :
<code>$ sudo mkdir -p /var/lib/mysql/mysql
$ sudo chown -R mysql:mysql /var/lib/mysql
$ sudo chmod 700 /var/lib/mysql
$ sudo chmod 750 /var/lib/mysql/mysql</code>

Il faut maintenant configurer [[:apparmor|AppArmor]]. D'après ce qui suit, nous devons modifier le fichier ''local/usr.sbin.mysqld'' :
<code>
$ tail /etc/apparmor.d/usr.sbin.mysqld -n3
  # Site-specific additions and overrides. See local/README for details.
  #include <local/usr.sbin.mysqld>
</code>
Modifions donc le fichier ''/etc/apparmor.d/local/usr.sbin.mysqld'' :
<code>$ cat /etc/apparmor.d/local/usr.sbin.mysqld 
# Site-specific additions and overrides for usr.sbin.mysqld.
# For more details, please see /etc/apparmor.d/local/README.

# Allow data dir access
  /home/mysql/ r,
  /home/mysql/** rwk,
</code>  
Rechargez :
<code>sudo service apparmor reload</code>
Redémarrez le service :
<code>sudo service mysql start</code>
Vérifiez le changement :
<code>
$ mysql -u root -p -e 'select @@datadir'
Enter password: 
+--------------+
| @@datadir    |
+--------------+
| /home/mysql/ |
+--------------+
</code>
